package com.tianjin.design.bridge;

/**
 *
 * @author tianjin
 *
 * 2023年6月12日
 * TODO 桥接模式# 结构型设计模式
 * 1、解释：将抽象部分与它的实现部分分离，使得它们可以独立的变化。
 * 			这里的抽象和实现非面向对象中的抽象和实现，当实现系统可能有多角度分类，每一种分类都有可能变化，那么就把这种多角度分离出来让他们独立变化，减少他们之间的耦合。
 * 2、使用场景：此模式对应组合聚合复用原则，对于一些非is-a的结构，可以不考虑使用继承，举例：各类手机和各类软件，让不同软件可以在不同手机上运行
 * 3、实现思路：
 * 	3-1 可以将手机认为是抽象部分，具体的软件为实现部分，抽象和实现是聚合复用关系，软件需要在手机上运行；
 *  3-2 先定义实现接口，规范行为 SoftwareImplment
 * 	3-3 先定义手机抽象类 PhoneAbstraction
 * 	3-4 具体的抽象实现，例如华为手机 HuaWeiPhone
 * 	3-5 腾讯的软件qq实现 QQSoftware
 * 	3-6 如下main
 *
 */
public class Test {

	public static void main(String[] args) {

		// 有一块华为手机
		PhoneAbstraction abstraction = new HuaWeiPhone();

		// 给华为手机安装qq软件
		abstraction.setImplment(new QQSoftware());

		// qq在华为手机上运行
		abstraction.run();

	}
}
